package init

import conf.ConfigurationManager
import constants.Constants
import org.apache.log4j.{Level, Logger}
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by coco-xsj on 2017/7/6.
  */
object Init {
  /**
    * 初始化spark、sql环境
    *
    * @return
    */
  def initSparkContext(): (SparkContext, SQLContext) = {
    // spark配置文件
    val conf = getSparkConf()
    // spark上下文环境
    val sc = new SparkContext(conf)
    // SQL上下文环境
    val sqlContext = getSQLContext(sc)
    // 设置Log等级
    Logger.getRootLogger.setLevel(Level.OFF)

    (sc, sqlContext)
  }

  /**
    * 加载spark配置，如果在本地使用2核，如果在集群，则提交作业时候指定
    *
    * @return
    */
  def getSparkConf(): SparkConf = {

      new SparkConf().setAppName(Constants.SPARK_APP_NAME).setMaster(Constants.SPARK_MASTER)

  }

  /**
    * 加载SQL上下环境，如果在本地生成sql环境
    *
    * @param sc
    * @return
    */
  def getSQLContext(sc: SparkContext): SQLContext = {

      new SQLContext(sc)

  }


}
